1 基本操作
1.1 仓库生成
1 | git init [DIR-NAME] //将当前目录,或者指定的DIR-NAME目录初始化为仓库 |
1.2 分支操作
1 | git branch 显示本地分支,-r 显示远程分支 -a 显示所有分支 |
1.3 内容整合
1 | git fetch [REPOSITORY-URL REMOTE-BRANCH] 取回远端分支内容 |
1.4 内容提交
1 | git status 查看当前改动提交状态 |
2 使用实践
2.1 当前工作未完成,临时切换到其他分支
1 | git stash 暂存当前未提交的内容 |
2.2 查找某处变更是哪次提交生成的(bug是谁在什么时候写的~)
2.2.1 方法一
1 | git blame FILE-NAME -L m,n 查看m到n行之间的最后一次变更的信息 |
2.2.2 方法二
1 | git log -L m,n:FILE-NAME 查看文件的m到n行之间的变化 |
2.2.3 方法三
1 | git bisect start 开始一个二分查找 |
2.2.4 方法四
1 | git show :/KEY-WORD 查找关键信息的变更,这里给出的是一个大致信息,比如是在其他分支做出的改动 |
2.2.5 方法五
1 | git log -p -S "字符串" 查找字符串在整个提交历史的出现, -G "正则表达式" |
2.2 查看文件的历史 包括被删除的文件
1 | git log -- FILE_NAME |
2.3 检查当前分支内容是否包含了最新的主干内容
1 | git cherry origin/master origin/BRANCH_NAME |
3 修改历史
版本信息的引用
- 相对一个版本 比如 HEAD^
- 相对N个版本 比如 HEAD@{10}
- 相对N个版本 比如 HEAD~10
- 相对N个版本 比如 HEAD@{5}^~5
版本区间
- A..B, A不可达&&B可达的的范围,如果是同一条主线上,则是前开后闭区间,否则视情况而定
- ^A B 等同于 A..B
- B —not A 等同于 A..B
- A…B A可达&&B可达除掉AB都可达的范围,前后闭区间
3.1 修改已经提交的log信息
3.1.1 修改上次的log
1 | git commit --amend |
3.1.2 合并上几次的log,原来五条
1 | git reset HEAD^^~3 在当前分支回退五个版本的提交历史 |
3.2 修改提交内容的历史
- 现有的版本A,B,C,D,E
- 删掉C的提交内容
3.2.1 使用revert
1 | git revert C 简单,但会增加一次提交,而且C原来的提交也会留在历史中 |
3.2.2 使用rebase
1 | git rebase -i B 删掉想要删掉的C提交,然后保存 |
3.2.3 使用cherry-pick
1 | git checkout B 先切到D之前的提交 |
4 参考资料
- git docs
- git docs
- Pro Git 2nd
- git community book中文
- Git - Tutorial
- 《Git权威指南》
- 《版本控制之道-使用Git》
- git 相关书籍
- github漫游指南
- github漫游指南
- github秘籍
- git工作流指南
- github help
- 怎样使用github
- github使用指南
- github中fork和更新原作者变更
最后更新: 2022年03月02日 03:32
原始链接: http://rawbin-.github.io/dev-tools/git/2016-01-18-git-commands/